import common from "./BQGIS-modelTool"
/**
 * 图片图钉种植
 * @param    viewer  Mars3d实例对象
 * @returns 
 */
export function initBQGIS_thumbtack(viewer = window.viewer){
    return new BQGIS_thumbtack(viewer)
}
export function BQGIS_thumbtack(viewer = window.viewer){
    this.viewer = viewer
    // 创建矢量数据图层
    this.graphicLayer = new mars3d.layer.GraphicLayer()
    this.viewer.addLayer(this.graphicLayer)
    this.common=new common()
}
/**
 * 添加图片图钉
 * @param  id                id（可不传入）
 * @param  position          坐标 经 纬 高（必传）  
 * @param  url               图片图钉地址（必传） 
 * @param  name              名称（可不传入） 
 * @param  opacity           透明度（可不传入） （0-1默认1）
 * @param  scale             缩放比例（可不传入） （默认1）
 * @param  width             宽度（可不传入） （默认40）
 * @param  height            高度（可不传入） （默认60）
 * @param  rotationDegree    旋转角度（可不传入） （0-360默认0）
 * @param  heightReference   贴地模式（可不传入） 
 * @param  verticalOrigin    上下原点偏移（可不传入）（参数verticalOriginOptions）（默认上偏移）
 * @param  horizontalOrigin  左右原点偏移（可不传入） （参数horizontalOriginOptions）（默认居中）
 * @param  isSave            是否保存到数据库（可不传入） （默认false）
 * @returns id
 */
BQGIS_thumbtack.prototype.addThumbtack=function(option={}){
    let param = Object.assign({
        url:'',
        id:this.common.guid(),
        name:'图片图钉',
        opacity:1,
        scale:1,
        width:40,
        height:60,
        rotationDegree:0,
        isSave:false,
        //color:"#ffffff",
        heightReference:'NONE',
        verticalOrigin:'BOTTOM',
        horizontalOrigin:'CENTER',
        position:[]
    },option)
    let graphic = new mars3d.graphic.BillboardEntity({
        id:param.id,
        name:param.name,
        position:param.position,
        style:{
            id:param.id,
            name:param.name,
            image:param.url,
            verticalOrigin:this.witchVerticalOrigin(param.verticalOrigin),
            horizontalOrigin:this.switchHorizontalOrigin(param.horizontalOrigin),
            width:param.width,
            height:param.height,
            rotationDegree:param.rotationDegree,
            heightReference:this.common.switchHeightReference(param.heightReference),
            position:param.position  
        }
    })
    this.graphicLayer.addGraphic(graphic)
    if(param.isSave){
        //param.position=this.common.getLngLat(graphic.position.getValue())
        this.common.saveSymbolAttribute({id:param.id, type:'thumbtack',typeName:'图片图钉',attribute:JSON.stringify(param)},true)
    }
    return param.id

}
/**
 * 更新图片图钉
 * @param  id                id（必传） 
 * @param  url               图片图钉地址（可不传入） 
 * @param  name              名称（可不传入） 
 * @param  opacity           透明度（可不传入） （0-1默认1）
 * @param  scale             缩放比例（可不传入） （默认1）
 * @param  width             宽度（可不传入） （默认40）
 * @param  height            高度（可不传入） （默认60）
 * @param  rotationDegree    旋转角度（可不传入） （0-360默认0）
 * @param  heightReference   贴地模式（可不传入） 
 * @param  verticalOrigin    上下原点偏移（可不传入）（参数verticalOriginOptions）（默认上偏移）
 * @param  horizontalOrigin  左右原点偏移（可不传入） （参数horizontalOriginOptions）（默认居中）
 * @param  isSave            是否保存到数据库（可不传入） （默认false）
 */
BQGIS_thumbtack.prototype.updateThumbtack=function(option={}){
    let data= this.graphicLayer.getGraphicById(option.id)
    if(data){
        data.setStyle(option)
        if(option.isSave){
            this.common.saveSymbolAttribute({id:data.id, type:'model',typeName:'模型',attribute:JSON.stringify(data.style)},false)
        }
    }
}
/**
 * 根据id移除图片
 * @param  id 
 */
BQGIS_thumbtack.prototype.removeThumbtack=function(id){
    let data= this.graphicLayer.getGraphicById(id)
    if(data){
        this.graphicLayer.removeGraphic(data)
    }
}
/**
 * 清除所有图片
 */
BQGIS_thumbtack.prototype.clearAllThumbtack=function(){
    this.graphicLayer.clear()
}
/**
 * 话图片图钉
 * @param  id                id（可不传入） 
 * @param  url               图片图钉地址（必传） 
 * @param  name              名称（可不传入） 
 * @param  opacity           透明度（可不传入） （0-1默认1）
 * @param  scale             缩放比例（可不传入） （默认1）
 * @param  width             宽度（可不传入） （默认40）
 * @param  height            高度（可不传入） （默认60）
 * @param  rotationDegree    旋转角度（可不传入） （0-360默认0）
 * @param  color             颜色（可不传入） （颜色混入）（默认#fff）
 * @param  heightReference   贴地模式（可不传入） 
 * @param  verticalOrigin    上下原点偏移（可不传入）（参数verticalOriginOptions）（默认上偏移）
 * @param  horizontalOrigin  左右原点偏移（可不传入） （参数horizontalOriginOptions）（默认居中）
 * @param  isSave            是否保存到数据库（可不传入） （默认false）
 * @returns id
 */
BQGIS_thumbtack.prototype.draw=function(option={}){
    let param = Object.assign({
        url:'',
        id:this.common.guid(),
        name:'图片图钉',
        opacity:1,
        scale:1,
        width:40,
        height:60,
        rotationDegree:0,
        isSave:false,
        //color:"#ffffff",
        heightReference:'NONE',
        verticalOrigin:'BOTTOM',
        horizontalOrigin:'CENTER'
    },option)
    this.graphicLayer.startDraw({
        type:'billboard',
        id:param.id,
        name:param.name,
        style:{
            image:param.url,
            id:param.id,
            name:param.name,
            verticalOrigin:this.witchVerticalOrigin(param.verticalOrigin),
            horizontalOrigin:this.switchHorizontalOrigin(param.horizontalOrigin),
            width:param.width,
            height:param.height,
            rotationDegree:param.rotationDegree,
            //color:param.color,
            heightReference:this.common.switchHeightReference(param.heightReference),
            //position:param.position        
        },
        success:graphic=>{           
            if(param.isSave){
                param.position=[graphic.point.lng,graphic.point.lat,graphic.point.alt]//this.common.getLngLat(graphic.position.getValue())
                this.common.saveSymbolAttribute({id:param.id, type:'thumbtack',typeName:'图片图钉',attribute:JSON.stringify(param)},true)
            }
        }
    })
    return param.id
}
BQGIS_thumbtack.prototype.heightReferenceOptions=function(){
    return this.common.seat
} 
BQGIS_thumbtack.prototype.witchVerticalOrigin=function(verticalOrigin) {
    let res = Cesium.VerticalOrigin.CENTER;
    switch (verticalOrigin) {
      case "CENTER":
        res = Cesium.VerticalOrigin.CENTER;
        break;
      case "BOTTOM":
        res = Cesium.VerticalOrigin.BOTTOM;
        break;
      case "BASELINE":
        res = Cesium.VerticalOrigin.BASELINE;
        break;
      case "TOP":
        res = Cesium.VerticalOrigin.TOP;
        break;
      default:
        break;
    }
    return res;
}
BQGIS_thumbtack.prototype.switchHorizontalOrigin=function(horizontalOrigin) {
    let res = Cesium.HorizontalOrigin.CENTER;
    switch (horizontalOrigin) {
      case "CENTER":
        res = Cesium.HorizontalOrigin.CENTER;
        break;
      case "LEFT":
        res = Cesium.HorizontalOrigin.LEFT;
        break;
      case "RIGHT":
        res = Cesium.HorizontalOrigin.RIGHT;
        break;
      default:
        break;
    }
    return res;
}
BQGIS_thumbtack.prototype.horizontalOriginOptions= [
    { value: "CENTER", label: "原点在对象的水平中心" },
    { value: "LEFT", label: "原点在对象的左侧" },
    { value: "RIGHT", label: "原点在对象的右侧" }
]
BQGIS_thumbtack.prototype.verticalOriginOptions= [
    { value: "CENTER", label: "原点在对象的垂直中心" },
    { value: "BOTTOM", label: "原点在对象的底部" },
    {
      value: "BASELINE",
      label:
        "如果对象包含文本，则原点位于文本的基线，否则原点位于对象的底部"
    },
    { value: "TOP", label: "原点在对象的顶部" }
]